CodeIgniter একটি MVC (Model-View-Controller) ফ্রেমওয়ার্ক, যেখানে View অংশটি সাধারণত HTML কন্টেন্ট প্রদর্শন করে। তবে, অধিক জটিল অ্যাপ্লিকেশনগুলোর জন্য, আপনি একটি টেমপ্লেট ইঞ্জিন ব্যবহার করে dynamic content rendering করতে পারেন, যা আপনার কোড এবং ভিউয়ের মধ্যে পার্থক্য স্পষ্ট করে এবং কোডের রক্ষণাবেক্ষণ সহজ করে তোলে।
CodeIgniter-এর জন্য বিভিন্ন টেমপ্লেট ইঞ্জিন উপলব্ধ, যেমন Twig, Mustache, এবং Blade (যেটি Laravel-এর জন্য ব্যবহৃত হয়)। তবে, এখানে আমরা PHP এর ভিতরে সহজ টেমপ্লেট ইঞ্জিন ব্যবহারের পদ্ধতি দেখাবো, যেখানে ডায়নামিক কনটেন্ট রেন্ডার করা হবে।
CodeIgniter-এ টেমপ্লেট ইঞ্জিন ব্যবহার করতে, প্রথমে আপনাকে টেমপ্লেট ফাইল এবং ডেটা (যা টেমপ্লেটের ভিতরে পাঠানো হবে) তৈরি করতে হবে।
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class TemplateController extends Controller
{
public function index()
{
$data = [
'title' => 'Welcome to CodeIgniter',
'content' => 'This is the dynamic content rendered through the template engine!',
];
// 'layout' টেমপ্লেটের সাথে ডেটা পাঠানো
echo view('layout', $data);
}
}
এখানে, index()
মেথডটি layout
নামক ভিউ (টেমপ্লেট) রেন্ডার করবে এবং ডাইনামিক ডেটা পাঠাবে। এই ডেটা $title
এবং $content
এর মাধ্যমে টেমপ্লেটে ব্যবহৃত হবে।
এখানে layout.php
একটি সাধারণ টেমপ্লেট, যেখানে ডাইনামিক কন্টেন্ট যোগ করা হবে।
app/Views/layout.php
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= esc($title) ?></title>
</head>
<body>
<header>
<h1>Header Section</h1>
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
<main>
<h2><?= esc($content) ?></h2> <!-- Dynamic content -->
</main>
<footer>
<p>Footer Section - <?= date('Y') ?></p>
</footer>
</body>
</html>
এখানে:
<?= esc($title) ?>
: title
ভ্যালু টেমপ্লেটে সন্নিবেশিত হবে, যা কন্ট্রোলার থেকে পাঠানো হয়েছে।<?= esc($content) ?>
: content
ভ্যালু টেমপ্লেটে সন্নিবেশিত হবে, যা কন্ট্রোলার থেকে পাঠানো হয়েছে।এখন, যখন ব্যবহারকারী /templatecontroller
রিকোয়েস্ট করবে, তখন তারা layout.php
টেমপ্লেটের মাধ্যমে ডাইনামিক কন্টেন্ট দেখতে পাবে। টেমপ্লেট ফাইলটি একই সাথে Header, Footer, এবং Main Content প্রদর্শন করবে, যেখানে Dynamic Content content
ডেটা দিয়ে রেন্ডার হবে।
CodeIgniter-এ একটি টেমপ্লেট সিস্টেমে header, footer, এবং sidebar এর মতো বিভিন্ন অংশ আলাদা আলাদা ফাইল হিসেবে ব্যবহার করা যেতে পারে, যা কোড পুনঃব্যবহারযোগ্য এবং রক্ষণাবেক্ষণযোগ্য করে তোলে।
app/Views/header.php
:
<header>
<h1>Welcome to My Website</h1>
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
app/Views/footer.php
:
<footer>
<p>© <?= date('Y') ?> My Website</p>
</footer>
app/Views/content.php
:
<main>
<h2><?= esc($content) ?></h2>
</main>
app/Views/layout.php
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= esc($title) ?></title>
</head>
<body>
<?= view('header') ?> <!-- Header Include -->
<?= view('content', $data) ?> <!-- Main Content Include -->
<?= view('footer') ?> <!-- Footer Include -->
</body>
</html>
এখানে:
view('header')
: Header টেমপ্লেট লোড করবে।view('content', $data)
: Main Content টেমপ্লেট লোড করবে এবং $data
প্যারামিটার (যেমন content
) পাঠাবে।view('footer')
: Footer টেমপ্লেট লোড করবে।CodeIgniter নিজে কোনো বিল্ট-ইন টেমপ্লেট ইঞ্জিন প্রদান না করলেও, উপরের পদ্ধতিটি ব্যবহার করে আপনি সহজে টেমপ্লেট ইঞ্জিন তৈরি করতে পারেন। তবে, আপনি চাইলে তৃতীয় পক্ষের টেমপ্লেট ইঞ্জিন (যেমন Twig, Mustache, Blade) ইনস্টল এবং কনফিগার করেও ব্যবহার করতে পারেন।
Blade টেমপ্লেট ইঞ্জিন ব্যবহার করতে চাইলে আপনাকে Composer দিয়ে Blade ইঞ্জিন লাইব্রেরি ইনস্টল করতে হবে। এটি Laravel-এর টেমপ্লেট ইঞ্জিন হলেও CodeIgniter-এ ব্যবহার করা যায়।
composer require jenssegers/blade
use Jenssegers\Blade\Blade;
$blade = new Blade(APPPATH.'Views', WRITEPATH.'cache');
echo $blade->make('template')->with('data', $data);
এভাবে, CodeIgniter-এ টেমপ্লেট ইঞ্জিনের মাধ্যমে ডাইনামিক কন্টেন্ট রেন্ডারিং করা যায়, যা অ্যাপ্লিকেশনের কাঠামোকে পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য করে তোলে।